home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / PIL / ImagePalette.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  4KB  |  169 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. import array
  5. import Image
  6.  
  7. class ImagePalette:
  8.     
  9.     def __init__(self, mode = 'RGB', palette = None):
  10.         self.mode = mode
  11.         self.rawmode = None
  12.         if not palette:
  13.             pass
  14.         self.palette = range(256) * len(self.mode)
  15.         self.colors = { }
  16.         self.dirty = None
  17.         if len(self.mode) * 256 != len(self.palette):
  18.             raise ValueError, 'wrong palette size'
  19.         
  20.  
  21.     
  22.     def getdata(self):
  23.         if self.rawmode:
  24.             return (self.rawmode, self.palette)
  25.         
  26.         return (self.mode + ';L', self.tostring())
  27.  
  28.     
  29.     def tostring(self):
  30.         if self.rawmode:
  31.             raise ValueError('palette contains raw palette data')
  32.         
  33.         if Image.isStringType(self.palette):
  34.             return self.palette
  35.         
  36.         return array.array('B', self.palette).tostring()
  37.  
  38.     
  39.     def getcolor(self, color):
  40.         if self.rawmode:
  41.             raise ValueError('palette contains raw palette data')
  42.         
  43.         if Image.isTupleType(color):
  44.             
  45.             try:
  46.                 return self.colors[color]
  47.             except KeyError:
  48.                 if Image.isStringType(self.palette):
  49.                     self.palette = map(int, self.palette)
  50.                 
  51.                 index = len(self.colors)
  52.                 if index >= 256:
  53.                     raise ValueError('cannot allocate more than 256 colors')
  54.                 
  55.                 self.colors[color] = index
  56.                 self.palette[index] = color[0]
  57.                 self.palette[index + 256] = color[1]
  58.                 self.palette[index + 512] = color[2]
  59.                 self.dirty = 1
  60.                 return index
  61.             except:
  62.                 None<EXCEPTION MATCH>KeyError
  63.             
  64.  
  65.         None<EXCEPTION MATCH>KeyError
  66.         raise ValueError('unknown color specifier: %r' % color)
  67.  
  68.     
  69.     def save(self, fp):
  70.         if self.rawmode:
  71.             raise ValueError('palette contains raw palette data')
  72.         
  73.         if type(fp) == type(''):
  74.             fp = open(fp, 'w')
  75.         
  76.         fp.write('# Palette\n')
  77.         fp.write('# Mode: %s\n' % self.mode)
  78.         for i in range(256):
  79.             fp.write('%d' % i)
  80.             for j in range(i, len(self.palette), 256):
  81.                 fp.write(' %d' % self.palette[j])
  82.             
  83.             fp.write('\n')
  84.         
  85.         fp.close()
  86.  
  87.  
  88.  
  89. def raw(rawmode, data):
  90.     palette = ImagePalette()
  91.     palette.rawmode = rawmode
  92.     palette.palette = data
  93.     palette.dirty = 1
  94.     return palette
  95.  
  96.  
  97. def new(mode, data):
  98.     return Image.core.new_palette(mode, data)
  99.  
  100.  
  101. def negative(mode = 'RGB'):
  102.     palette = range(256)
  103.     palette.reverse()
  104.     return ImagePalette(mode, palette * len(mode))
  105.  
  106.  
  107. def random(mode = 'RGB'):
  108.     randint = randint
  109.     import random
  110.     palette = map((lambda a, randint = randint: randint(0, 255)), [
  111.         0] * 256 * len(mode))
  112.     return ImagePalette(mode, palette)
  113.  
  114.  
  115. def wedge(mode = 'RGB'):
  116.     return ImagePalette(mode, range(256) * len(mode))
  117.  
  118.  
  119. def load(filename):
  120.     fp = open(filename, 'rb')
  121.     lut = None
  122.     if not lut:
  123.         
  124.         try:
  125.             import GimpPaletteFile as GimpPaletteFile
  126.             fp.seek(0)
  127.             p = GimpPaletteFile.GimpPaletteFile(fp)
  128.             lut = p.getpalette()
  129.         except (SyntaxError, ValueError):
  130.             pass
  131.         except:
  132.             None<EXCEPTION MATCH>(SyntaxError, ValueError)
  133.         
  134.  
  135.     None<EXCEPTION MATCH>(SyntaxError, ValueError)
  136.     if not lut:
  137.         
  138.         try:
  139.             import GimpGradientFile as GimpGradientFile
  140.             fp.seek(0)
  141.             p = GimpGradientFile.GimpGradientFile(fp)
  142.             lut = p.getpalette()
  143.         except (SyntaxError, ValueError):
  144.             pass
  145.         except:
  146.             None<EXCEPTION MATCH>(SyntaxError, ValueError)
  147.         
  148.  
  149.     None<EXCEPTION MATCH>(SyntaxError, ValueError)
  150.     if not lut:
  151.         
  152.         try:
  153.             import PaletteFile as PaletteFile
  154.             fp.seek(0)
  155.             p = PaletteFile.PaletteFile(fp)
  156.             lut = p.getpalette()
  157.         except (SyntaxError, ValueError):
  158.             pass
  159.         except:
  160.             None<EXCEPTION MATCH>(SyntaxError, ValueError)
  161.         
  162.  
  163.     None<EXCEPTION MATCH>(SyntaxError, ValueError)
  164.     if not lut:
  165.         raise IOError, 'cannot load palette'
  166.     
  167.     return lut
  168.  
  169.